/**
 * @description 为一个暴露的属性添加描述
 * @param value 装饰器参数
 * @param value.displayName 指定属性名称
 * @param value.type 指定属性类型
 * @param value.value 指定属性默认值
 */
export function property(value: { displayName: string, type: string, value?: any }) {
  return function (target: any, propertyName: string) {
    if (!target.propsMap) target.propsMap = {};
    target.propsMap[propertyName] = value;
  }
}

/**
 * @description 为一个暴露的方法添加描述
 * @param value 装饰器参数
 * @param value.displayName 指定属性名称
 * @param value.type 指定属性类型
 * @param value.value 指定属性默认值
 */
export function eventProperty(value: { displayName: string }) {
  return function (target: any, propertyName: string) {
    if (!target.eventPropsMap) target.eventPropsMap = {};
    target.eventPropsMap[propertyName] = value;
  }
}